package com.yiren.dbaa.view.interf;

import android.graphics.Bitmap;
import android.graphics.Canvas;

import com.yiren.backstage.currency.bean.GpsInfoBean;
import com.yiren.backstage.currency.bean.PointBean;
import com.yiren.backstage.currency.entity.TrajectoryPointEntity;
import com.yiren.dbaa.currency.model.TrajectVariableModel;

import java.util.List;

/**
 * Created by WANGRONGXIANG
 * on 2022/4/14
 * Describe 轨迹绘制
 */
public interface ITrajectoryDraw {

    /**
     * 绘制车辆
     *
     * @param bitmap  车辆图标
     * @param azimuth 方位角
     */
    void drawCar(Canvas canvas, List<PointBean> carPoints, Bitmap bitmap, float azimuth, TrajectVariableModel model);

    /**
     * 绘制地图比例尺
     */
    void drawScale(Canvas canvas, TrajectVariableModel model);

    /**
     * 绘制当前的点
     *
     * @param currentPoint 当前的点
     */
    void drawCurrentPoint(Canvas canvas, GpsInfoBean gpsInfo, PointBean currentPoint, TrajectVariableModel model);

    /**
     * 绘制实线
     */
    void drawCollectSx(Canvas canvas, List<TrajectoryPointEntity> points, TrajectVariableModel model, int bmId);

    /**
     * 绘制虚线
     */
    void drawCollectXx(Canvas canvas, List<TrajectoryPointEntity> points, TrajectVariableModel model, int bmId);

    /**
     * 绘制人行横道线
     */
    void drawCollectRXHD(Canvas canvas, List<TrajectoryPointEntity> points, TrajectVariableModel model, int bmId);

    /**
     * 绘制停止线
     */
    void drawCollectTZX(Canvas canvas, List<TrajectoryPointEntity> points, TrajectVariableModel model, int bmId);

    /**
     * 绘制网状线和禁停区域
     */
    void drawCollectJtqy(Canvas canvas, List<TrajectoryPointEntity> points, TrajectVariableModel model, int bmId);

    /**
     * 绘制网状线网格
     */
    void drawCollectWebLine(Canvas canvas, List<TrajectoryPointEntity> points, TrajectVariableModel model);

    /**
     * 绘制刹车区域
     */
    void drawCollectScqy(Canvas canvas, List<TrajectoryPointEntity> points, TrajectVariableModel model, int bmId);

    /**
     * 绘制中心圈
     */
    void drawCollectZxq(Canvas canvas, List<TrajectoryPointEntity> points, TrajectVariableModel model, List<PointBean> carPoints, int bmId);

    /**
     * 绘制双黄线
     *
     * @param shxLineType 1：双实线 2：双虚线 3:虚实线
     */
    void drawCollectShx(Canvas canvas, List<TrajectoryPointEntity> points, TrajectVariableModel model, int shxLineType, int bmId);

    /**
     * 绘制路口直行
     */
    void drawCollectLkZX(Canvas canvas, List<TrajectoryPointEntity> points, TrajectVariableModel model, int bmId);

    /**
     * 绘制路口右转
     */
    void drawCollectLkYZ(Canvas canvas, List<TrajectoryPointEntity> points, TrajectVariableModel model, int bmId);

    /**
     * 绘制路口左转
     */
    void drawCollectLkZZ(Canvas canvas, List<TrajectoryPointEntity> points, TrajectVariableModel model, int bmId);

    /**
     * 绘制路口掉头
     */
    void drawCollectLkDT(Canvas canvas, List<TrajectoryPointEntity> points, TrajectVariableModel model, int bmId);

    /**
     * 绘制路口直行左转
     */
    void drawCollectLkZXZZ(Canvas canvas, List<TrajectoryPointEntity> points, TrajectVariableModel model, int bmId);

    /**
     * 绘制路口直行右转
     */
    void drawCollectLkZXYZ(Canvas canvas, List<TrajectoryPointEntity> points, TrajectVariableModel model, int bmId);

    /**
     * 绘制路口直行掉头
     */
    void drawCollectLkZXDT(Canvas canvas, List<TrajectoryPointEntity> points, TrajectVariableModel model, int bmId);

    /**
     * 绘制路口左转掉头
     */
    void drawCollectLkZZDT(Canvas canvas, List<TrajectoryPointEntity> points, TrajectVariableModel model, int bmId);

    /**
     * 绘制路口直行左转掉头
     */
    void drawCollectLkZXZZDT(Canvas canvas, List<TrajectoryPointEntity> points, TrajectVariableModel model, int bmId);

    /**
     * 绘制路口左右转
     */
    void drawCollectLkZYZ(Canvas canvas, List<TrajectoryPointEntity> points, TrajectVariableModel model, int bmId);

    /**
     * 绘制中心圈示例
     */
    void drawSampleZXQ(Canvas canvas, TrajectVariableModel model);

    /**
     * 绘制路口直行示例
     */
    void drawSampleLkZX(Canvas canvas, TrajectVariableModel model);

    /**
     * 绘制路口右转示例
     */
    void drawSampleLkYZ(Canvas canvas, TrajectVariableModel model);

    /**
     * 绘制路口左转示例
     */
    void drawSampleLkZZ(Canvas canvas, TrajectVariableModel model);

    /**
     * 绘制路口掉头示例
     */
    void drawSampleLkDT(Canvas canvas, TrajectVariableModel model);

    /**
     * 绘制路口直行左转示例
     */
    void drawSampleLkZXZZ(Canvas canvas, TrajectVariableModel model);

    /**
     * 绘制路口直行右转示例
     */
    void drawSampleLkZXYZ(Canvas canvas, TrajectVariableModel model);

    /**
     * 绘制路口直行掉头示例
     */
    void drawSampleLkZXDT(Canvas canvas, TrajectVariableModel model);

    /**
     * 绘制路口左转掉头示例
     */
    void drawSampleLkZZDT(Canvas canvas, TrajectVariableModel model);

    /**
     * 绘制路口直行左转掉头示例
     */
    void drawSampleLkZXZZDT(Canvas canvas, TrajectVariableModel model);

}
